﻿using System;
using Example.Presentation.Views;

namespace Example.Presentation.Presenters
{
    /// <summary>
    /// A base implementation for a presenter
    /// </summary>
    /// <typeparam name="TView"></typeparam>
    public abstract class PresenterBase<TView> : IDisposable where TView : IView 
    {
        /// <summary>
        /// The current view
        /// </summary>
        public TView View { get; set; }

        /// <summary>
        /// Called when the presenter is loaded
        /// </summary>
        public abstract void Load();

        /// <summary>
        /// Called when the presenter is being disposed
        /// </summary>
        public abstract void Dispose();
    }
}
